package generic;

import idao.IDAOCategoria;
import idao.IDAOProduto;
import idao.IDAOUsuario;
import idao.IDAOUsuarioProduto;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import dao.DAOCategoria;
import dao.DAOProduto;
import dao.DAOUsuario;
import dao.DAOUsuarioProduto;

public abstract class DAOFactory {

	private static final EntityManagerFactory factory;
	private static IDAOUsuario usuarioDAO;
	private static IDAOProduto produtoDAO;
	private static IDAOCategoria categoriaDAO;
	private static IDAOUsuarioProduto usuarioProdutoDAO;

	static {
		factory = Persistence.createEntityManagerFactory("ListaCasamento");
	}

	// USUÁRIO
	public static IDAOUsuario getUsuarioDAO() {
		usuarioDAO = new DAOUsuario(factory.createEntityManager());
		return usuarioDAO;
	}
	
	// PRODUTO
	public static IDAOProduto getProdutoDAO() {
		produtoDAO = new DAOProduto(factory.createEntityManager());
		return produtoDAO;
	}

	// CATEGORIA
	public static IDAOCategoria getCategoriaDAO() {
		categoriaDAO = new DAOCategoria(factory.createEntityManager());
		return categoriaDAO;
	}

	// USUARIO-PRODUTO
	public static IDAOUsuarioProduto getUsuarioProdutoDAO() {
		usuarioProdutoDAO = new DAOUsuarioProduto(factory.createEntityManager());
		return usuarioProdutoDAO;
	}

	public static void close() {
		if (factory != null && factory.isOpen()) {
			factory.close();
		}
	}

}
